> ## Documentation Index
> Fetch the complete documentation index at: https://kawax.biz/llms.txt
> Use this file to discover all available pages before exploring further.

# Laravel Package Skeleton — le template de démarrage pour packages officiels

> Analyse initiale de laravel/package-skeleton. Un template officiel de démarrage qui regroupe les bonnes pratiques du développement de packages Laravel. Configuration complète : Pest, Larastan, Pint, Workbench et CI GitHub Actions.

<Info>
  Cet article s'appuie sur une exploration du code source. Il s'agit d'un dépôt en cours de développement à la date de juillet 2026.
</Info>

## Qu'est-ce que Laravel Package Skeleton ?

[Laravel Package Skeleton](https://github.com/laravel/package-skeleton) est un template de démarrage pour créer un package Laravel.

```bash theme={null}
git clone https://github.com/laravel/package-skeleton.git my-package
cd my-package
composer install
```

L'exécution de `composer install` lance automatiquement un script de configuration interactif (`configure.php`) qui vous demande, question par question, le nom du package, du vendor, du namespace et les fonctionnalités à activer. À l'issue de cette étape, vous êtes prêt à développer immédiatement.

```mermaid theme={null}
graph TD
    A["Cliquer sur<br>Use this template sur GitHub"] --> B["composer install"]
    B --> C["configure.php s'exécute"]
    C --> D{"Configuration interactive"}
    D --> E["Nom du package, vendor, namespace"]
    D --> F["Choix des fonctionnalités"]
    E --> G["Configuration terminée"]
    F --> G
    G --> H["Vérifier avec composer test"]
```

## Pourquoi ce squelette est utile

Commencer un package Laravel « à sa manière » demande beaucoup de temps sur la mise en place de l'environnement de test, l'analyse statique, le formatage du code et GitHub Actions — autant de tâches qui n'ont rien à voir avec la logique du package.

Laravel Package Skeleton rassemble en un seul template les bonnes pratiques utilisées par l'équipe Laravel elle-même. En partant de ce template, vous sautez la phase de « mise en place » et vous démarrez directement l'implémentation.

## Outils inclus

| Outil                                                    | Rôle                                    |
| -------------------------------------------------------- | --------------------------------------- |
| [Pest](https://pestphp.com/)                             | Framework de test                       |
| [Larastan](https://github.com/larastan/larastan)         | Analyse statique pour Laravel           |
| [Pint](https://laravel.com/docs/pint)                    | Formateur de code                       |
| [Orchestra Testbench](https://packages.tools/testbench/) | Environnement de test pour packages     |
| Workbench                                                | Application de développement end-to-end |

## Fonctionnalités de package configurables

Lors du prompt de `composer install`, vous choisissez uniquement les fonctionnalités souhaitées. Les scaffolds correspondants aux options non sélectionnées sont supprimés.

| Fonctionnalité | Description                                       |
| -------------- | ------------------------------------------------- |
| Config file    | Ajoute un fichier de configuration dans `config/` |
| Routes         | Ajoute un fichier de routes                       |
| Views          | Ajoute des vues Blade                             |
| Translations   | Ajoute des fichiers de traductions                |
| Migrations     | Ajoute des fichiers de migration                  |
| Assets         | Ajoute des assets publics                         |
| Commands       | Ajoute des commandes Artisan                      |
| Facade         | Ajoute une classe facade                          |
| Boost Skill    | Ajoute un skill pour agents IA                    |

## Outils optionnels

De la même façon, vous pouvez activer ou désactiver les outils selon le projet.

| Outil           | Description                                                 |
| --------------- | ----------------------------------------------------------- |
| Dependabot      | PR de mise à jour automatique des dépendances               |
| Issue Template  | Modèle d'issue GitHub                                       |
| Changelog       | Mise à jour automatique de `CHANGELOG.md` lors des releases |
| Funding         | Lien de sponsors GitHub                                     |
| Security Policy | Politique de signalement de vulnérabilité                   |

## Étapes de mise en place

<Steps>
  <Step title="Créer le dépôt à partir du template">
    Cliquez sur le bouton **Use this template** sur GitHub ou clonez directement.

    ```bash theme={null}
    git clone https://github.com/laravel/package-skeleton.git my-package
    cd my-package
    ```
  </Step>

  <Step title="Installer les dépendances">
    L'exécution de `composer install` déclenche `configure.php`.

    ```bash theme={null}
    composer install
    ```

    Pour exécuter le script à la main, utilisez `--no-scripts`.

    ```bash theme={null}
    composer install --no-scripts
    php configure.php
    ```
  </Step>

  <Step title="Répondre aux prompts">
    Vous répondez aux éléments suivants un à un :

    * Nom et e-mail de l'auteur
    * Nom du vendor (ex. `kawax`)
    * Nom du package (ex. `my-package`)
    * Description du package
    * Nom de la classe (ex. `MyPackage`)
    * Sélection multiple des fonctionnalités
    * Sélection multiple des outils
    * Création automatique du dépôt GitHub (si `gh` est authentifié)
  </Step>

  <Step title="Vérification">
    ```bash theme={null}
    composer test
    ```

    Exécute successivement PHPStan → Pint → couverture de types → Pest.
  </Step>

  <Step title="Test end-to-end avec Workbench">
    ```bash theme={null}
    composer serve
    ```

    Une petite application Laravel de test démarre sur `http://localhost:8000`.
  </Step>
</Steps>

## Mode non interactif

En CI ou depuis un script, utilisez `--no-interaction`.

```bash theme={null}
php configure.php --no-interaction --config --routes
```

Les flags de fonctionnalités permettent de ne conserver que les options souhaitées. Sans flags, toutes les fonctionnalités sont incluses.

## CI GitHub Actions

Le fichier `tests.yml` fourni effectue une matrice de test sur plusieurs versions de PHP, Laravel et OS.

```yaml theme={null}
matrix:
  os: [ubuntu-latest, windows-latest]
  php: [8.3, 8.4, 8.5]
  laravel: [12.*, 13.*]
  stability: [prefer-lowest, prefer-stable]
```

Actions exécutées dans chaque job :

1. **PHPStan** (`composer analyse`) — analyse statique
2. **Pint** (`composer lint:check`) — vérification de style
3. **Couverture de types** (`composer test:types`) — vérifie 100 % de couverture (Ubuntu seulement)
4. **Pest** (`composer test:unit`) — tests unitaires (Ubuntu seulement)

## Automatisation du Changelog

`update-changelog.yml` met à jour `CHANGELOG.md` automatiquement lors d'une release GitHub. `release.yml` classe les changements selon les labels de PR pour générer les notes de release.

Labels des notes de release :

| Label            | Catégorie                    |
| ---------------- | ---------------------------- |
| `breaking`       | Changement cassant           |
| `enhancement`    | Ajout de fonctionnalité      |
| `bug`            | Correction de bug            |
| `documentation`  | Documentation                |
| `dependencies`   | Dépendances                  |
| `maintenance`    | Maintenance                  |
| `skip-changelog` | Non inclus dans l'historique |

## Ce que fait configure.php

`configure.php` est un script de configuration bootstrap exécuté une seule fois. Il se supprime après exécution.

```mermaid theme={null}
graph LR
    A["Exécution de configure.php"] --> B["Remplace les placeholders<br>:vendor_slug/:package_slug<br>:author_name, etc."]
    B --> C["Supprime les fichiers de fonctionnalités non utilisées"]
    C --> D["README_PACKAGE.md → README.md<br>AGENTS_PACKAGE.md → AGENTS.md"]
    D --> E["Lie CLAUDE.md à AGENTS.md<br>Lie .claude à .agents"]
    E --> F["Se supprime lui-même"]
```

## Configuration GitHub post-installation

Recommandations post-installation indiquées dans le README :

* **Revue manuelle des PR Dependabot** — aucun workflow d'auto-merge inclus
* **Créer les labels de notes de release** — `breaking`, `enhancement`, `bug`, `documentation`, `dependencies`, `maintenance`, `skip-changelog`, `duplicate`
* **Configurer la protection de la branche `main`** — l'automatisation du changelog effectue un commit sur `CHANGELOG.md`, il faut ajuster la protection en conséquence

Aucun secret de dépôt supplémentaire n'est nécessaire : les workflows utilisent le `GITHUB_TOKEN` intégré à GitHub.

## État actuel du développement

* **Dépôt GitHub** : [laravel/package-skeleton](https://github.com/laravel/package-skeleton)
* **Date de publication** : juillet 2026 (développement actif)
* **Attention** : projet en phase précoce, l'API et la structure peuvent évoluer

Si vous vous lancez dans le développement d'un package Laravel, mieux vaut partir de ce template plutôt que d'assembler soi-même un squelette. Il concentre les bonnes pratiques accumulées par l'équipe Laravel au fil des années.

<Card title="Dépôt laravel/package-skeleton" icon="github" href="https://github.com/laravel/package-skeleton">
  Retrouvez le code source et les informations à jour ici.
</Card>

<Card title="Documentation officielle de développement de packages" icon="book-open" href="https://laravel.com/docs/packages">
  Consultez la documentation officielle pour les bases du développement de packages Laravel.
</Card>


## Related topics

- [Guide de développement d'applications intégrées à l'API du moteur - VOICEVOX for Laravel](/fr/packages/laravel-voicevox/app-guide.md)
- [Tutoriel - Laravel Console Starter](/fr/packages/laravel-console-starter/tutorial.md)
- [Mode API du moteur : Talk (synthèse vocale de texte) - VOICEVOX for Laravel](/fr/packages/laravel-voicevox/engine-talk.md)
- [Prise en main - VOICEVOX for Laravel](/fr/packages/laravel-voicevox/getting-started.md)
- [Kits de démarrage](/fr/starter-kits.md)
