Initial commit
This commit is contained in:
258
skills/make-all/README.md
Normal file
258
skills/make-all/README.md
Normal file
@@ -0,0 +1,258 @@
|
||||
# Framework Make All
|
||||
|
||||
Orchestrateur générant une stack complète pour une entité.
|
||||
|
||||
## Vue d'ensemble
|
||||
Cette skill orchestre l'appel de toutes les skills du framework pour générer une entité complète avec tous ses composants selon les principes Elegant Objects et DDD.
|
||||
|
||||
## Caractéristiques
|
||||
|
||||
### Stack complète générée
|
||||
- **Contracts** - Interfaces de base (si absentes)
|
||||
- **Entity** - Entité Doctrine + Repository
|
||||
- **Out** - DTO immuable pour output
|
||||
- **Invalide** - Exceptions métier
|
||||
- **Urls** - Génération d'URLs + CQRS
|
||||
- **Collection** - Collection typée
|
||||
- **Factory** - Factory Foundry pour tests
|
||||
- **Story** - Story Foundry pour fixtures
|
||||
|
||||
## Utilisation
|
||||
|
||||
```bash
|
||||
Use skill framework:make:all
|
||||
```
|
||||
|
||||
Vous serez invité à fournir :
|
||||
1. Nom de l'entité
|
||||
2. Propriétés avec types (optionnel)
|
||||
|
||||
## Exemple d'utilisation
|
||||
|
||||
```bash
|
||||
EntityName: Product
|
||||
Properties:
|
||||
- name: string
|
||||
- description: string
|
||||
- price: float
|
||||
- stock: int
|
||||
- isActive: bool
|
||||
```
|
||||
|
||||
Génère 15+ fichiers en une seule commande.
|
||||
|
||||
## Ordre d'exécution
|
||||
|
||||
### Phase 1 - Fondation
|
||||
```
|
||||
framework:make:contracts (si besoin)
|
||||
```
|
||||
|
||||
### Phase 2 - Core
|
||||
```
|
||||
framework:make:entity
|
||||
```
|
||||
|
||||
### Phase 3 - Patterns
|
||||
```
|
||||
framework:make:out
|
||||
framework:make:invalide
|
||||
```
|
||||
|
||||
### Phase 4 - Avancé
|
||||
```
|
||||
framework:make:urls
|
||||
framework:make:collection
|
||||
```
|
||||
|
||||
### Phase 5 - Tests
|
||||
```
|
||||
framework:make:factory
|
||||
framework:make:story
|
||||
```
|
||||
|
||||
## Fichiers générés
|
||||
|
||||
### Contracts (si absents)
|
||||
```
|
||||
src/Contracts/
|
||||
├── OutInterface.php
|
||||
├── InvalideInterface.php
|
||||
├── HasUrlsInterface.php
|
||||
├── OutDataInterface.php
|
||||
├── InvalideDataInterface.php
|
||||
├── UrlsDataInterface.php
|
||||
├── Story/
|
||||
│ └── StoryInterface.php
|
||||
└── Doctrine/
|
||||
└── DoctrineMigrationInterface.php
|
||||
```
|
||||
|
||||
### Core
|
||||
```
|
||||
src/
|
||||
├── Entity/
|
||||
│ └── Product.php
|
||||
└── Repository/
|
||||
├── ProductRepository.php
|
||||
└── ProductRepositoryInterface.php
|
||||
```
|
||||
|
||||
### Patterns
|
||||
```
|
||||
src/
|
||||
├── Out/
|
||||
│ └── ProductOut.php
|
||||
└── Invalide/
|
||||
└── ProductInvalide.php
|
||||
```
|
||||
|
||||
### Avancé
|
||||
```
|
||||
src/
|
||||
├── Urls/
|
||||
│ └── ProductUrls.php
|
||||
├── MessageHandler/
|
||||
│ ├── ProductUrlsMessage.php
|
||||
│ └── ProductUrlsMessageHandler.php
|
||||
└── Collection/
|
||||
└── ProductCollection.php
|
||||
```
|
||||
|
||||
### Tests
|
||||
```
|
||||
src/
|
||||
├── Factory/
|
||||
│ └── ProductFactory.php
|
||||
└── Story/
|
||||
├── ProductStory.php
|
||||
└── AppStory.php (updated)
|
||||
```
|
||||
|
||||
## Output exemple
|
||||
|
||||
```
|
||||
✓ Phase 1 - Fondation
|
||||
✓ Contracts déjà présents
|
||||
|
||||
✓ Phase 2 - Core
|
||||
✓ src/Entity/Product.php
|
||||
✓ src/Repository/ProductRepository.php
|
||||
✓ src/Repository/ProductRepositoryInterface.php
|
||||
|
||||
✓ Phase 3 - Patterns
|
||||
✓ src/Out/ProductOut.php
|
||||
✓ src/Invalide/ProductInvalide.php
|
||||
|
||||
✓ Phase 4 - Avancé
|
||||
✓ src/Urls/ProductUrls.php
|
||||
✓ src/MessageHandler/ProductUrlsMessage.php
|
||||
✓ src/MessageHandler/ProductUrlsMessageHandler.php
|
||||
✓ src/Collection/ProductCollection.php
|
||||
|
||||
✓ Phase 5 - Tests
|
||||
✓ src/Factory/ProductFactory.php
|
||||
✓ src/Story/ProductStory.php
|
||||
✓ src/Story/AppStory.php (updated)
|
||||
|
||||
📊 Total: 15 fichiers créés
|
||||
```
|
||||
|
||||
## Prochaines étapes
|
||||
|
||||
Après génération, suivre ces étapes :
|
||||
|
||||
1. **Migration Doctrine**
|
||||
```bash
|
||||
php bin/console make:migration
|
||||
php bin/console doctrine:migrations:migrate
|
||||
```
|
||||
|
||||
2. **Enrichir les classes**
|
||||
- ProductInvalide : ajouter exceptions métier
|
||||
- ProductUrls : ajouter méthodes d'URLs
|
||||
- ProductOut : ajouter propriétés exposées
|
||||
- ProductCollection : ajouter méthodes métier (YAGNI)
|
||||
- ProductFactory : ajouter méthodes custom (YAGNI)
|
||||
- ProductStory : ajouter scénarios de test
|
||||
|
||||
3. **Tests**
|
||||
```bash
|
||||
php bin/phpunit
|
||||
```
|
||||
|
||||
4. **Validation PHPStan**
|
||||
```bash
|
||||
vendor/bin/phpstan analyse
|
||||
```
|
||||
|
||||
## Prérequis
|
||||
|
||||
- Framework `atournayre/framework` installé avec ses dépendances
|
||||
- Projet Symfony avec Doctrine ORM configuré
|
||||
- Zenstruck Foundry pour les tests (optionnel)
|
||||
|
||||
## Avantages
|
||||
|
||||
### Rapidité
|
||||
- Une seule commande pour générer toute la stack
|
||||
- Pas besoin d'appeler 8 skills manuellement
|
||||
- Gain de temps considérable
|
||||
|
||||
### Cohérence
|
||||
- Ordre d'exécution garanti
|
||||
- Dépendances gérées automatiquement
|
||||
- Pas de risque d'oublier un composant
|
||||
|
||||
### Best practices
|
||||
- Principes Elegant Objects appliqués partout
|
||||
- DDD respecté
|
||||
- Architecture cohérente
|
||||
|
||||
## Cas d'usage
|
||||
|
||||
### Nouveau projet
|
||||
```bash
|
||||
# Créer première entité complète
|
||||
Use skill framework:make:all
|
||||
EntityName: User
|
||||
```
|
||||
|
||||
### Ajout feature
|
||||
```bash
|
||||
# Ajouter nouvelle entité au projet existant
|
||||
Use skill framework:make:all
|
||||
EntityName: Order
|
||||
```
|
||||
|
||||
### Prototypage rapide
|
||||
```bash
|
||||
# Générer rapidement plusieurs entités
|
||||
Use skill framework:make:all (Product)
|
||||
Use skill framework:make:all (Category)
|
||||
Use skill framework:make:all (Review)
|
||||
```
|
||||
|
||||
## Gestion d'erreurs
|
||||
|
||||
Si une skill échoue :
|
||||
1. Affichage clair de l'erreur
|
||||
2. Indication de la skill en erreur
|
||||
3. Arrêt du processus
|
||||
4. Fichiers déjà créés conservés
|
||||
|
||||
## Options futures
|
||||
|
||||
Possibles extensions :
|
||||
- `--skip-tests` : sans Factory/Story
|
||||
- `--skip-urls` : sans Urls/CQRS
|
||||
- `--minimal` : Entity + Repository + Out uniquement
|
||||
- `--api-only` : Stack pour API (Entity + Repository + Out + Collection)
|
||||
|
||||
## Principes Elegant Objects appliqués
|
||||
- Toutes les classes finales
|
||||
- Constructeurs privés
|
||||
- Factory statiques
|
||||
- Immutabilité encouragée
|
||||
- Interfaces pour tous les contrats
|
||||
- Tests first-class citizens
|
||||
Reference in New Issue
Block a user