🔧 Dev

OffreThe Augmented Engineering Programdès 2 500 € / mois

Tech Lead & équipe · ou MVP livré en 3 mois + recrutement

Découvrir
iASSET framework
Guide opérationnelExemple métier : location saisonnière

Guide — iASSET & Gemini CLI : de la spécification à la merge request.

Fil rouge : une application web de location de meublés saisonniers (catalogue, disponibilités, réservations, données voyageurs). Ce guide décrit comment appliquer le framework iASSET avec Gemini CLI : la spécification cadrage la génération et la revue, et sert de référence pour valider les MR.

Méthode : skills définis en amont ; au dev, un skill pour traiter la spec ; au commit, un autre skill ; au push, en CI, un skill spec + sécurité (sur le diff — pas de logique cachée côté CI) ; en fin de CI, un skill pour une MR propre ; puis l’humain reprend la main.

Le CLI expose : skills, hooks, policy, -p / --prompt, extensions, MCP — pas une commande analyze dédiée.

Next.js (App Router)TypeScriptGemini CLIGitLab CIScaleway (exemple cloud)

Schéma — méthode iASSET + Gemini CLI (skills par phase)

Couleurs : amont (bleu), développement (vert), Git (violet), CI (rose), humain (jaune). Le gate CI « spec + sécu » analyse le diff — pas le runtime de l’app Next.js.

Amont — bibliothèque de skills iASSET

Développement — skill : traiter la spec

Implémentation — Next.js, lib métier, tests

Commit — skill dédié

Push — déclenche la CI

CI — lint & typecheck

CI — skill : spec + sécurité

CI — tests automatisés

CI — skill : MR propre

Humain — review & merge

Détail des étapes (aligné sur le schéma)

Chaque phase invoque un skill différent (définis en amont). Les artefacts (CA, DoD, tests, messages de commit) sont versionnés ; en CI, les skills opèrent sur le diff et les fichiers, pas sur le runtime de l’app Next.js.

1

Amont — skills iASSET

Définir et versionner la bibliothèque de skills (spec, commit, CI spec/sécu, CI MR, etc.).

2

Développement — skill spec

Invoquer le skill qui traite la spec : CA, DoD, description des tests (location saisonnière).

3

Implémentation

Code et tests (Next.js : `app/`, `lib/`, Route Handlers) ; branche feature.

4

Commit — skill dédié

Autre skill pour format de message, scope, lien ticket (hook ou commande locale).

5

Push

Déclenche la pipeline CI sur la branche / MR.

6

CI — skill spec + sécu

Vérification diff + fichiers contre spec et sécurité — sans décorateur applicatif.

7

CI — lint → spec+sécu → tests → skill MR

Ordre aligné sur le schéma ; puis l’humain valide la MR.

Ordre recommandé en CI

Lint + typecheckskill spec + sécu (sur le diff) → testsskill MRrevue humaine. Tout passe par prompts, skills et policy — pas besoin de conventions framework spécifiques dans la CI.

Leviers du Gemini CLI (réel) pour chaque pilier iASSET

Vous composez votre workflow avec les briques fournies par la CLI : pas besoin d’une commande analyze — la revue est un prompt structuré (souvent via des skills), des règles policy, et éventuellement des hooks pour l’enchaînement local ou CI.

PilierLevier CLI (exemple)Note
[A]Skills + policy (--policy)Règles de workspace et d’outils ; prompts qui séparent `app/`, `lib/`, Route Handlers.
[S] specSkills (`gemini skills`)Playbooks versionnés pour CA / DoD / tests avant le premier commit.
[S] sécuPolicy + promptsContraindre l’agent ; MCP pour contexte doc / linter si besoin.
[E]gemini -p (headless) + hooksCI ou hook Git : même CLI qu’en local, sortie JSON pour fail the job.
[T]Prompt ou skill « tests »Complément aux tests automatisés, pas remplacement.

Les cinq piliers iASSET (et rôle de Gemini)

[A] Architecture

Vous définissez où le code peut être généré (composants, Route Handlers, adaptateurs data) et où il reste interdit (règles métier pures dans `lib/`). Skill dédié + policy (chemins, outils) : pas de sous-commande « analyze » — la revue vit dans les prompts et les skills.

[S] Spécification

Skills en amont (ex. asset-spec) : CA, DoD, description des tests. En MR, un prompt headless avec la spec et le diff vérifie l’alignement ; les artefacts restent la source de vérité.

[S] Sécurité

En CI, le skill « spec + sécu » opère sur le diff et les fichiers — pas sur des décorateurs runtime. Policy + prompts pour borner l’agent.

[E] Evaluation

Après lint/typecheck : gemini -p (headless) avec le skill de revue MR + contexte (spec, diff). Hooks (pre-push, CI) pour enchaîner. La revue humaine reste obligatoire pour le métier.

[T] Test

Skill optionnel « plan de tests / trous » ; la barrière dure reste Jest (ou équivalent). Pas de merge sur la seule base d’une sortie Gemini.

Exemple de découpage (Next.js full-stack)

Schéma de flux — une app, un dépôt

Location saisonnière : pages et composants dans app/, réservation via Route Handlers, règles métier dans lib/.

Next.js — pages & composants

Catalogue, tunnel de réservation

Route Handlers

POST /api/bookings/...

Base de données

Disponibilités, contrats saisonniers

Règle iASSET — isolation du domaine

La génération cible surtout les composants, les handlers et les adaptateurs (paiement, calendrier). Le cœur métier dans lib/ (chevauchements, tarifs, annulation) reste explicite et protégé par vos skills / policy.

[S]pécification & [S]écurité — exemples

Types métier & Route Handler Next.js

Exemple minimal : une commande typée dans lib/, et un POST dans app/api/.../route.ts qui parse le JSON et appelle le service métier. En CI, le skill « spec + sécu » lit le diff — RGPD, idempotence et journaux se vérifient via prompts / policy sur le code source.

// lib/domain/booking.ts — pas d’import Next ici
export type BookingId = string;

export interface CreateBookingCommand {
  idempotencyKey: string;
  listingId: string;
  guestId: string;
  stayFrom: string; // ISO
  stayTo: string;
}

// lib/booking/service.ts
export async function createSeasonalBooking(cmd: CreateBookingCommand): Promise<BookingId> {
  // règles métier + persistance
  throw new Error('à implémenter');
}
// app/api/bookings/seasonal/route.ts
import { NextRequest, NextResponse } from 'next/server';
import type { CreateBookingCommand } from '@/lib/domain/booking';
import { createSeasonalBooking } from '@/lib/booking/service';

export async function POST(req: NextRequest) {
  const body = (await req.json()) as CreateBookingCommand;
  const bookingId = await createSeasonalBooking(body);
  return NextResponse.json({ bookingId });
}

En CI, après le lint, un job « spec + sécu » lance gemini -p sur le diff (skills + policy). Un job ultérieur peut préparer la MR ; la revue humaine reste la dernière étape.

[E]valuation & [T]est — pipeline CI

GitLab CI : ordre des jobs

La revue via Gemini est un quality gate (prompt + skills + policy), pas un substitut aux tests. La création de MR peut être automatisée (script + API GitLab) ; la description peut être produite par un second appel gemini -p ou un template rempli à partir de la spec.

MR : utilisez un job ou une commande locale qui appelle l’API GitLab (POST /projects/:id/merge_requests) avec titre, description, branche source / cible — la description peut résumer spec + résultats des gates.

.gitlab-ci.yml — extrait (lint → spec+sécu → tests → MR)
# Ordre : lint → skill spec+sécu (diff) → tests → skill MR — pas de décorateur en CI
# CLI : gemini -p + --policy ; pas de sous-commande "gemini analyze"
lint_ts: ...
gemini_spec_security:
  needs: [lint_ts]
  stage: test
  script:
    - | gemini -p "Skill: spec + sécurité sur le diff. Spec: @docs/spec.md" \
      --policy policies/gemini-asset.yaml \
      --include-directories app,lib \
      --output-format json \
      | node scripts/check-gemini-gate.js
unit_tests:
  needs: [gemini_spec_security]
  script: npm run test:ci
gemini_mr_ready:
  needs: [unit_tests]
  script: node scripts/open-or-update-mr.js

Les prompts invoquent vos skills versionnés (gemini skills). check-gemini-gate.js fait échouer le job si la sortie JSON indique des blocages. open-or-update-mr.js peut appeler l’API GitLab pour titre + description ; la revue humaine reste hors pipeline.

Définition de merge (checklist)

À adapter à votre politique d’équipe. Objectif : des critères objectifs, pas des promesses chiffrées non sourcées.

  • Spécification et critères d’acceptation référencés (lien ou fichier versionné) — règles métier location saisonnière alignées.
  • Lint et typecheck verts sur la branche.
  • Skills CI (spec + sécu, puis MR) : sorties conformes à votre barème ; pas de merge automatique sans validation humaine si vous l’exigez.
  • Tests unitaires / contrat nécessaires au périmètre (réservations, chevauchements, etc.) : verts.
  • Au moins une revue humaine (hors bots) selon les règles du projet.

Respect de votre vie privée

Nous utilisons des cookies pour améliorer votre expérience, analyser le trafic et personnaliser le contenu. Vous pouvez choisir quels cookies accepter.