-
Notifications
You must be signed in to change notification settings - Fork 0
stack guide
Le système offre une flexibilité totale pour choisir les technologies selon vos besoins:
| Mode | Commande | Description |
|---|---|---|
| Backend seul | @chain:backend-feature --context=<backend> |
Développer uniquement l'API |
| Frontend seul | @chain:frontend-feature --context=<frontend> |
Développer uniquement l'UI |
| Fullstack | @chain:fullstack-feature |
Développer backend + frontend ensemble |
@chain:backend-feature --context=<backend> "<description>"Backends disponibles: dotnet, nodejs, python, java, go, rust
Exemples:
@chain:backend-feature --context=dotnet "Add user management API with CRUD"
@chain:backend-feature --context=nodejs "Add product API with Express"
@chain:backend-feature --context=python "Add authentication API with FastAPI"
@chain:backend-feature --context=java "Add order service with Spring Boot"
@chain:backend-feature --context=go "Add payment service with Gin"
@chain:backend-feature --context=rust "Add performance-critical service with Axum"@chain:frontend-feature --context=<frontend> "<description>"Frontends disponibles: react, angular, vue, svelte, nextjs, nuxt
Exemples:
@chain:frontend-feature --context=react "Add user dashboard with data tables"
@chain:frontend-feature --context=angular "Add product listing page with filters"
@chain:frontend-feature --context=vue "Add blog interface with Composition API"
@chain:frontend-feature --context=svelte "Add real-time dashboard with Svelte 5"
@chain:frontend-feature --context=nextjs "Add enterprise portal with App Router"
@chain:frontend-feature --context=nuxt "Add e-commerce site with Vue 3"@chain:fullstack-feature [--backend=<stack>] [--frontend=<stack>] [--adapter=<llm>] "<description>"| Paramètre | Options | Default | Description |
|---|---|---|---|
--backend |
dotnet, nodejs
|
dotnet |
Stack backend |
--frontend |
react, angular
|
react |
Stack frontend |
--adapter |
claude, openai, gemini, ollama
|
config | LLM à utiliser |
| Backend | Frontend | Architecture Backend | Architecture Frontend |
|---|---|---|---|
dotnet |
react |
Clean Architecture (.NET 10) | Feature-Sliced Design (Next.js 15) |
dotnet |
angular |
Clean Architecture (.NET 10) | Feature Modules (Angular 19) |
nodejs |
react |
Clean Architecture (Express/Fastify) | Feature-Sliced Design (Next.js 15) |
nodejs |
angular |
Clean Architecture (Express/Fastify) | Feature Modules (Angular 19) |
@chain:fullstack-feature --backend=dotnet --frontend=react "Add user management with CRUD operations"Résultat attendu:
Backend (.NET):
src/
├── Domain/Entities/User.cs
├── Application/
│ ├── Users/
│ │ ├── DTOs/UserDto.cs
│ │ ├── Commands/CreateUserCommand.cs
│ │ ├── Queries/GetUsersQuery.cs
│ │ └── Interfaces/IUserService.cs
├── Infrastructure/Users/UserService.cs
└── Api/Endpoints/UsersEndpoints.cs
tests/
├── Unit/Application.Tests/Users/
└── Integration/Api.IntegrationTests/Users/
Frontend (React/Next.js):
src/
├── features/users/
│ ├── api/
│ │ ├── types.ts # Generated from .NET DTOs
│ │ ├── api.ts # API service
│ │ └── hooks.ts # TanStack Query hooks
│ ├── components/
│ │ ├── UserList.tsx
│ │ ├── UserForm.tsx
│ │ └── UserCard.tsx
│ └── pages/
│ └── UsersPage.tsx
├── __mocks__/
│ └── users.handlers.ts # MSW handlers
__tests__/
└── features/users/
@chain:fullstack-feature --backend=nodejs --frontend=angular "Add product catalog with search and filters"Backend (Node.js/TypeScript):
src/
├── domain/entities/Product.ts
├── application/
│ ├── products/
│ │ ├── dtos/ProductDto.ts
│ │ ├── interfaces/IProductService.ts
│ │ └── handlers/
├── infrastructure/products/ProductService.ts
└── api/controllers/products.controller.ts
Frontend (Angular):
src/app/
├── features/products/
│ ├── services/
│ │ ├── products.types.ts
│ │ └── products.service.ts
│ ├── components/
│ │ ├── product-list/
│ │ ├── product-card/
│ │ └── product-filters/
│ ├── pages/
│ │ └── products-page/
│ └── products.routes.ts
L'agent architect conçoit l'architecture globale:
- Contrat API (endpoints, DTOs, codes HTTP)
- Architecture backend selon le pattern Clean Architecture
- Architecture frontend selon le pattern du framework
- Conventions de nommage cohérentes
L'agent developer implémente le backend:
- Entités Domain avec validation
- Application layer (DTOs, handlers, interfaces)
- Infrastructure (persistence, services externes)
- API endpoints RESTful
Gates: dotnet build --warnaserror ou pnpm run build
L'agent unit-tester écrit les tests:
- Tests unitaires Domain
- Tests unitaires Application
- Tests d'intégration API
Gates: Coverage ≥ 80%
L'agent api-integrator génère la couche d'intégration:
- Types TypeScript depuis les DTOs backend
- Service API typé
- Hooks (React) ou Services (Angular) pour data fetching
- Handlers MSW pour les tests
L'agent frontend-developer implémente l'UI:
- Structure feature/module
- Composants page et réutilisables
- États loading/error/empty
- Formulaires avec validation
Gates: pnpm run build + pnpm run lint
L'agent frontend-tester écrit les tests:
- Tests composants avec Testing Library
- Tests hooks/services
- Mocking API avec MSW
Gates: Coverage ≥ 80%
L'agent reviewer valide l'ensemble:
- Cohérence contrat API
- Gestion d'erreurs cross-stack
- Sécurité
- Performance
L'agent docwriter met à jour la documentation:
- OpenAPI/Swagger pour l'API
- Documentation composants frontend
- Exemples d'intégration
Pour définir les defaults au niveau projet, créez .ai-agents.yaml:
library:
source: ".ai-agents"
adapter: claude
# Configuration fullstack
fullstack:
backend:
stack: dotnet
overrides:
coverage_target: 100
frontend:
stack: react
overrides:
coverage_target: 100
# Règles additionnelles
rules:
- "Use FluentValidation for backend validation"
- "Use Zod for frontend validation"
- "All API calls must have error handling"# Reprendre à partir du frontend
@chain:fullstack-feature --start=api-integration "Continue user management"
# Reprendre à partir de la review
@chain:fullstack-feature --start=review "Continue user management"# Utiliser Claude pour l'architecture (meilleur raisonnement)
@chain:fullstack-feature --adapter=claude "Add complex feature"
# Ou configurer dans .ai-agents.yaml
fullstack:
adapters:
architecture: claude
implementation: openai
testing: gemini# Activer les tests E2E (Playwright)
@chain:fullstack-feature --include-e2e "Add user management"Quand frontend et backend sont développés en parallèle ou alternativement, utilisez l'approche Contract-First : définir le contrat API avant l'implémentation.
┌─────────────────────────────────────────────────────────────┐
│ CONTRAT API (source unique de vérité) │
│ │
│ contracts/openapi.yaml ou contracts/api.schema.json │
└─────────────────────────────────────────────────────────────┘
│ │
▼ ▼
┌───────────────┐ ┌───────────────┐
│ Backend │ │ Frontend │
│ (any stack) │ │ (any stack) │
│ │ │ │
│ Implémente ou │ │ Génère types │
│ génère DTOs │ │ + mocks API │
└───────────────┘ └───────────────┘
# .ai-agents.yaml
library:
source: ".claude"
adapter: claude
# Mode Contract-First
contract:
enabled: true
path: "contracts/openapi.yaml" # ou "contracts/api.schema.json"
format: openapi # openapi | jsonschema | asyncapi
# Options de génération (utilisent le stack installé automatiquement)
generation:
backend:
output: "src/Application/DTOs" # Chemin adapté au stack
auto_generate: false # true = génère depuis le contrat
frontend:
output: "src/api/types"
auto_generate: true
include_mocks: true # Génère les mocks MSW/similaire1. Définir le contrat (architecte ou équipe)
@architect "Design API contract for user management"
# Produit: contracts/openapi.yaml2. Frontend peut commencer immédiatement
# Génère types + mocks depuis le contrat
@api-integrator "Generate types and mocks from contract"
# Développe avec les mocks
@frontend-developer "Implement user list page"3. Backend peut commencer immédiatement
# Implémente l'API selon le contrat
@developer "Implement user API according to contract"4. Intégration
# Vérifie la conformité des deux côtés
@reviewer "Validate API contract compliance on both sides"| Avantage | Description |
|---|---|
| Parallélisation | Frontend et backend avancent indépendamment |
| Pas de duplication | Le contrat génère les types des deux côtés |
| Mocks automatiques | Le frontend fonctionne sans attendre le backend |
| Validation | Le contrat valide la conformité des implémentations |
# Générer le contrat depuis une description
@architect "Create OpenAPI contract for: GET/POST/PUT/DELETE /api/products"
# Mettre à jour le contrat après un changement
@architect "Update contract: add pagination to GET /api/products"
# Regénérer les types après modification du contrat
@api-integrator "Regenerate types from updated contract"Le contexte backend définit un type_map qui convertit les types:
| .NET / Node.js | TypeScript |
|---|---|
string |
string |
int, long, number
|
number |
bool, boolean
|
boolean |
DateTime, Date
|
string (ISO 8601) |
Guid |
string |
List<T>, T[]
|
T[] |
Dictionary<K,V>, Record<K,V>
|
Record<K, V> |
T? |
T | null |
Oui, mais pas encore dans la chain fullstack-feature. Utilisez:
@chain:backend-feature --context=python "Add API endpoint"
@chain:frontend-feature "Add UI for API"Chaque contexte définit des code_templates. Vous pouvez les surcharger dans .ai-agents.yaml:
fullstack:
backend:
stack: dotnet
templates:
entity: |
// Custom entity templateLes contributions sont bienvenues ! Voir CONTRIBUTING.md
This documentation is automatically synced from the main repository.