Initial commit
This commit is contained in:
55
skills/make-contracts/README.md
Normal file
55
skills/make-contracts/README.md
Normal file
@@ -0,0 +1,55 @@
|
||||
# Framework Make Contracts
|
||||
|
||||
Génère les interfaces de contrats pour une architecture Elegant Objects.
|
||||
|
||||
## Vue d'ensemble
|
||||
Cette skill crée l'ensemble des interfaces nécessaires pour supporter les principes Elegant Objects et DDD dans un projet Symfony.
|
||||
|
||||
## Interfaces générées
|
||||
|
||||
### Interfaces principales
|
||||
- **OutInterface** - Pour objets de sortie (DTO immuables)
|
||||
- **InvalideInterface** - Pour exceptions métier
|
||||
- **HasUrlsInterface** - Pour objets ayant des URLs générées
|
||||
|
||||
### Interfaces de data
|
||||
- **OutDataInterface** - Pour data classes de sortie
|
||||
- **InvalideDataInterface** - Pour data classes d'invalidation
|
||||
- **UrlsDataInterface** - Pour data classes d'URLs
|
||||
|
||||
### Interfaces spécialisées
|
||||
- **StoryInterface** - Pour stories de tests (Foundry)
|
||||
- **DoctrineMigrationInterface** - Pour migrations Doctrine
|
||||
|
||||
## Utilisation
|
||||
|
||||
```bash
|
||||
# Via skill
|
||||
Use skill framework:make:contracts
|
||||
```
|
||||
|
||||
## Structure créée
|
||||
|
||||
```
|
||||
src/
|
||||
└── Contracts/
|
||||
├── OutInterface.php
|
||||
├── InvalideInterface.php
|
||||
├── HasUrlsInterface.php
|
||||
├── OutDataInterface.php
|
||||
├── InvalideDataInterface.php
|
||||
├── UrlsDataInterface.php
|
||||
├── Story/
|
||||
│ └── StoryInterface.php
|
||||
└── Doctrine/
|
||||
└── DoctrineMigrationInterface.php
|
||||
```
|
||||
|
||||
## Prérequis
|
||||
Aucun - C'est la première skill à exécuter dans un nouveau projet.
|
||||
|
||||
## Principes Elegant Objects appliqués
|
||||
- Toutes les interfaces définissent des contrats clairs
|
||||
- Pas de méthodes statiques
|
||||
- Chaque interface a une responsabilité unique
|
||||
- Favorise l'immutabilité et l'encapsulation
|
||||
59
skills/make-contracts/SKILL.md
Normal file
59
skills/make-contracts/SKILL.md
Normal file
@@ -0,0 +1,59 @@
|
||||
---
|
||||
name: framework:make:contracts
|
||||
description: Génère les interfaces de contrats pour une architecture Elegant Objects
|
||||
license: MIT
|
||||
version: 1.0.0
|
||||
---
|
||||
|
||||
# Framework Make Contracts Skill
|
||||
|
||||
## Description
|
||||
Génère l'ensemble des interfaces de contrats nécessaires pour une architecture respectant les principes Elegant Objects et DDD.
|
||||
|
||||
Ces interfaces servent de fondation pour toutes les autres skills du framework.
|
||||
|
||||
## Usage
|
||||
```
|
||||
Use skill framework:make:contracts
|
||||
```
|
||||
|
||||
## Templates
|
||||
- `OutInterface.php` - Interface pour objets de sortie (DTO)
|
||||
- `InvalideInterface.php` - Interface pour exceptions métier
|
||||
- `HasUrlsInterface.php` - Interface pour objets ayant des URLs
|
||||
- `OutDataInterface.php` - Interface pour data classes de sortie
|
||||
- `InvalideDataInterface.php` - Interface pour data classes d'invalidation
|
||||
- `UrlsDataInterface.php` - Interface pour data classes d'URLs
|
||||
- `Story/StoryInterface.php` - Interface pour stories de tests
|
||||
- `Doctrine/DoctrineMigrationInterface.php` - Interface pour migrations Doctrine
|
||||
|
||||
## Variables requises
|
||||
Aucune - Ces interfaces sont génériques et ne nécessitent pas de paramètres.
|
||||
|
||||
## Dépendances
|
||||
Aucune - C'est la première skill à exécuter (Niveau 0 - Fondation).
|
||||
|
||||
## Outputs
|
||||
- `src/Contracts/OutInterface.php`
|
||||
- `src/Contracts/InvalideInterface.php`
|
||||
- `src/Contracts/HasUrlsInterface.php`
|
||||
- `src/Contracts/OutDataInterface.php`
|
||||
- `src/Contracts/InvalideDataInterface.php`
|
||||
- `src/Contracts/UrlsDataInterface.php`
|
||||
- `src/Contracts/Story/StoryInterface.php`
|
||||
- `src/Contracts/Doctrine/DoctrineMigrationInterface.php`
|
||||
|
||||
## Workflow
|
||||
|
||||
1. Vérifier si le répertoire `src/Contracts/` existe
|
||||
2. Créer la structure de répertoires si nécessaire :
|
||||
- `src/Contracts/`
|
||||
- `src/Contracts/Story/`
|
||||
- `src/Contracts/Doctrine/`
|
||||
3. Copier tous les templates d'interfaces depuis `framework/skills/make-contracts/templates/Contracts/` vers `src/Contracts/`
|
||||
4. Afficher la liste des fichiers créés
|
||||
|
||||
## Notes
|
||||
- Ces interfaces n'ont pas besoin d'être modifiées pour chaque projet
|
||||
- Elles doivent être créées une seule fois par projet
|
||||
- Toutes les autres skills du framework dépendent de ces interfaces
|
||||
@@ -0,0 +1,18 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace App\Contracts\Doctrine;
|
||||
|
||||
use Doctrine\DBAL\Schema\Schema;
|
||||
|
||||
interface DoctrineMigrationInterface
|
||||
{
|
||||
public function up(Schema $schema): void;
|
||||
|
||||
public function down(Schema $schema): void;
|
||||
|
||||
public function description(): string;
|
||||
|
||||
public function isTransactional(): bool;
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace App\Contracts;
|
||||
|
||||
interface HasUrlsInterface
|
||||
{
|
||||
public function urls(): mixed;
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace App\Contracts;
|
||||
|
||||
/**
|
||||
* Marker interface for Invalide data objects.
|
||||
*/
|
||||
interface InvalideDataInterface
|
||||
{
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace App\Contracts;
|
||||
|
||||
interface InvalideInterface
|
||||
{
|
||||
public function invalide(): mixed;
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace App\Contracts;
|
||||
|
||||
/**
|
||||
* Marker interface for Out data objects.
|
||||
*/
|
||||
interface OutDataInterface
|
||||
{
|
||||
}
|
||||
10
skills/make-contracts/templates/Contracts/OutInterface.php
Normal file
10
skills/make-contracts/templates/Contracts/OutInterface.php
Normal file
@@ -0,0 +1,10 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace App\Contracts;
|
||||
|
||||
interface OutInterface
|
||||
{
|
||||
public function out(): mixed;
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace App\Contracts\Story;
|
||||
|
||||
interface StoryInterface
|
||||
{
|
||||
public function build(): void;
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace App\Contracts;
|
||||
|
||||
/**
|
||||
* Marker interface for Urls data objects.
|
||||
*/
|
||||
interface UrlsDataInterface
|
||||
{
|
||||
}
|
||||
Reference in New Issue
Block a user