# Frameworkmakefactory

> Génère Factory Foundry pour tests Use when this capability is needed.

- Skill: `tomevault-io/frameworkmakefactory` (Agent Skill, multi-file: 2 files)
- Install (CLI): `npx skillmds@latest add tomevault-io/frameworkmakefactory`
- Raw SKILL.md: https://api.skillmd.com/api/skills/tomevault-io/frameworkmakefactory/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: tomevault-io (https://skillmd.com/u/tomevault-io)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/tomevault-io/frameworkmakefactory

---


# Framework Make Factory Skill

## Instructions à Exécuter

**IMPORTANT : Exécute ce workflow étape par étape :**


## Description
Génère une Factory Foundry pour créer des instances d'entités dans les tests.

## Usage
```
Use skill framework:make:factory
```

## Variables requises
- **{EntityName}** - Nom de l'entité en PascalCase (ex: Product)
- **{entityName}** - Nom de l'entité en camelCase (ex: product)
- **{namespace}** - Namespace du projet (défaut: App)
- **{properties}** - Liste des propriétés pour `defaults()`

## Dépendances
- Entité dans `src/Entity/{EntityName}.php`
- Zenstruck Foundry installé

## Outputs
- `src/Factory/{EntityName}Factory.php`

## Workflow

1. Demander le nom de l'entité (EntityName)
2. Vérifier que l'entité existe
3. Lire l'entité pour détecter les propriétés du constructeur `create()`
4. Générer la factory depuis le template `templates/Factory/`
5. Afficher le fichier créé

## Patterns appliqués

- Extends PersistentObjectFactory, classe `final`
- Méthode `class()` retournant FQCN
- Méthode `defaults()` avec valeurs Faker
- Méthode `initialize()` avec `instantiateWith()` appelant `Entity::create()`
- Méthodes custom (ex: `withSpecificId()`, `inactive()`)

## References

- [Usage](references/usage.md) - Exemples de tests et valeurs Faker recommandées

## Notes
- Utilise `instantiateWith()` pour respecter Elegant Objects (pas de `new Entity()`)
- Faker via `self::faker()`
- Méthodes custom uniquement si demandées (YAGNI)
- Persiste par défaut, `withoutPersisting()` si besoin

---
> Converted and distributed by [TomeVault](https://tomevault.io/claim/atournayre) — claim your Tome and manage your conversions.
<!-- tomevault:4.0:skill_md:2026-04-11 -->

