> ## 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 — officiële startertemplate voor packages

> Een eerste verkenning van laravel/package-skeleton. Een officiële startertemplate met de beste practices voor Laravel-packageontwikkeling. Een alles-in-één opzet met Pest, Larastan, Pint, Workbench en GitHub Actions CI.

<Info>
  Dit artikel is gebaseerd op onderzoek van de broncode. De repository is per juli 2026 nog in ontwikkeling.
</Info>

## Wat is Laravel Package Skeleton

[Laravel Package Skeleton](https://github.com/laravel/package-skeleton) is een startertemplate voor het bouwen van Laravel-packages.

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

Wanneer je `composer install` uitvoert, start automatisch een interactief configuratiescript (`configure.php`) dat je vraag voor vraag door de instellingen leidt: packagenaam, vendornaam, namespace en de features die je wilt gebruiken. Daarna kun je meteen beginnen met ontwikkelen.

```mermaid theme={null}
graph TD
    A["Use this template<br>op GitHub"] --> B["composer install"]
    B --> C["configure.php start automatisch"]
    C --> D{"Interactieve configuratie"}
    D --> E["Packagenaam, vendor, namespace"]
    D --> F["Features selecteren"]
    E --> G["Configuratie voltooid"]
    F --> G
    G --> H["Controleren met composer test"]
```

## Waarom je deze skeleton nodig hebt

Als je een Laravel-package "op eigen houtje" begint te bouwen, besteed je veel tijd aan zaken die niets met de eigenlijke packagelogica te maken hebben: het opzetten van een testomgeving, statische analyse, codeformattering en GitHub Actions-configuratie.

Laravel Package Skeleton bundelt de best practices die het Laravel-team in echte packageontwikkeling gebruikt in één template. Met deze template sla je de "omgevingsopbouw" over en kun je direct beginnen met het implementeren van je packagelogica.

## Meegeleverde tools

| Tool                                                     | Rol                              |
| -------------------------------------------------------- | -------------------------------- |
| [Pest](https://pestphp.com/)                             | Testframework                    |
| [Larastan](https://github.com/larastan/larastan)         | Statische analyse voor Laravel   |
| [Pint](https://laravel.com/docs/pint)                    | Codeformatter                    |
| [Orchestra Testbench](https://packages.tools/testbench/) | Testomgeving voor packages       |
| Workbench                                                | App voor end-to-end ontwikkeling |

## Configureerbare packagefeatures

Via de prompts tijdens `composer install` kies je alleen de features die je nodig hebt. Scaffolding voor niet-geselecteerde features wordt verwijderd.

| Feature      | Beschrijving                                    |
| ------------ | ----------------------------------------------- |
| Config file  | Voegt een configuratiebestand toe aan `config/` |
| Routes       | Voegt een routebestand toe                      |
| Views        | Voegt Blade-views toe                           |
| Translations | Voegt taalbestanden toe                         |
| Migrations   | Voegt migratiebestanden toe                     |
| Assets       | Voegt publiceerbare assets toe                  |
| Commands     | Voegt Artisan-commando's toe                    |
| Facade       | Voegt een facade-klasse toe                     |
| Boost Skill  | Voegt een skill voor AI-agents toe              |

## Configureerbare tools

Net als bij de features kun je tools per project aan- of uitzetten.

| Tool            | Beschrijving                                      |
| --------------- | ------------------------------------------------- |
| Dependabot      | Automatische PR's voor dependency-updates         |
| Issue Template  | GitHub Issue-templates                            |
| Changelog       | Automatische update van CHANGELOG.md bij releases |
| Funding         | GitHub Sponsors-sponsorlink                       |
| Security Policy | Beleid voor het melden van beveiligingslekken     |

## De setup stap voor stap

<Steps>
  <Step title="Maak een repository aan vanuit de template">
    Klik op de knop **Use this template** op GitHub om een nieuwe repository te maken, of kloon direct.

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

  <Step title="Installeer de dependencies">
    Wanneer je `composer install` uitvoert, start `configure.php` automatisch.

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

    Wil je het script handmatig uitvoeren, gebruik dan de optie `--no-scripts`.

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

  <Step title="Beantwoord de prompts">
    Je stelt de volgende onderdelen vraag voor vraag in.

    * Author Name / Email
    * Vendornaam (bijv. `kawax`)
    * Packagenaam (bijv. `my-package`)
    * Packagebeschrijving
    * Klassenaam (bijv. `MyPackage`)
    * Multiselect van de features die je wilt gebruiken
    * Multiselect van de tools die je wilt gebruiken
    * Automatisch aanmaken van de GitHub-repository (als de gh CLI is geauthenticeerd)
  </Step>

  <Step title="Controleer of alles werkt">
    ```bash theme={null}
    composer test
    ```

    Voert alle checks uit in de volgorde PHPStan → Pint → type coverage → Pest.
  </Step>

  <Step title="End-to-end testen met Workbench">
    ```bash theme={null}
    composer serve
    ```

    Op `http://localhost:8000` start een eenvoudige Laravel-app om je package te testen.
  </Step>
</Steps>

## Niet-interactieve modus

Voor setup vanuit CI of scripts gebruik je de flag `--no-interaction`.

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

Als je featureflags opgeeft, worden alleen die features opgenomen. Laat je de flags weg, dan worden alle features opgenomen.

## GitHub Actions CI

De meegeleverde `tests.yml` is een matrixbuild die tests uitvoert op combinaties van meerdere PHP-versies, Laravel-versies en besturingssystemen.

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

Wat elke job uitvoert:

1. **PHPStan** (`composer analyse`) — statische analyse
2. **Pint** (`composer lint:check`) — stijlcontrole
3. **Type coverage** (`composer test:types`) — controle op 100% type coverage (alleen Ubuntu)
4. **Pest** (`composer test:unit`) — unittests (alleen Ubuntu)

## Changelog-automatisering

`update-changelog.yml` werkt `CHANGELOG.md` automatisch bij, getriggerd door een GitHub Release. `release.yml` genereert releasenotes door wijzigingen te categoriseren op PR-label.

Labels voor releasenotes:

| Label            | Categorie                    |
| ---------------- | ---------------------------- |
| `breaking`       | Breaking changes             |
| `enhancement`    | Nieuwe functies              |
| `bug`            | Bugfixes                     |
| `documentation`  | Documentatie                 |
| `dependencies`   | Dependencies                 |
| `maintenance`    | Onderhoud                    |
| `skip-changelog` | Niet opnemen in de changelog |

## Wat configure.php doet

`configure.php` is een bootstrap die als configuratiescript slechts één keer wordt uitgevoerd. Na uitvoering wordt het verwijderd.

```mermaid theme={null}
graph LR
    A["configure.php uitvoeren"] --> B["Placeholders vervangen<br>:vendor_slug/:package_slug<br>:author_name enz."]
    B --> C["Ongebruikte featurebestanden verwijderen"]
    C --> D["README_PACKAGE.md → README.md<br>AGENTS_PACKAGE.md → AGENTS.md"]
    D --> E["CLAUDE.md linken aan AGENTS.md<br>.claude linken aan .agents"]
    E --> F["Script verwijdert zichzelf"]
```

## GitHub-instellingen na installatie

Aanbevolen instellingen na installatie, zoals beschreven in de README:

* **Beoordeel Dependabot-PR's handmatig** — er is geen auto-merge-workflow inbegrepen
* **Maak de labels voor releasenotes aan** — `breaking`, `enhancement`, `bug`, `documentation`, `dependencies`, `maintenance`, `skip-changelog`, `duplicate`
* **Stel branchbescherming voor `main` in** — de changelog-automatisering laat GitHub Actions committen naar `CHANGELOG.md`, dus je moet de branchbeschermingsregels hierop aanpassen

Extra repository-secrets zijn niet nodig. De meegeleverde workflows gebruiken de ingebouwde `GITHUB_TOKEN` van GitHub.

## Huidige ontwikkelstatus

* **GitHub-repository**: [laravel/package-skeleton](https://github.com/laravel/package-skeleton)
* **Publicatie**: juli 2026 (actief in ontwikkeling)
* **Let op**: omdat het project zich in een vroeg ontwikkelstadium bevindt, kunnen de API en structuur nog veranderen

Als je van plan bent een Laravel-package te bouwen, kun je beter met deze template beginnen dan zelf een skeleton vanaf nul in elkaar te zetten. Hij zit boordevol best practices die het Laravel-team in jarenlange packageontwikkeling heeft opgedaan.

<Card title="laravel/package-skeleton repository" icon="github" href="https://github.com/laravel/package-skeleton">
  Hier vind je de broncode en de laatste informatie.
</Card>

<Card title="Officiële documentatie voor packageontwikkeling" icon="book-open" href="https://laravel.com/docs/packages">
  Raadpleeg de officiële documentatie voor de basis van Laravel-packageontwikkeling.
</Card>


## Related topics

- [Versiecompatibiliteit van packages beheren](/nl/advanced/package-versioning.md)
- [Core-package en eigen drivers - Feedable](/nl/packages/feedable/core.md)
- [Laravel-packages testen met Orchestra Testbench](/nl/advanced/package-testing.md)
- [De officiële SDK-compatibiliteitslaag gebruiken](/nl/packages/laravel-copilot-sdk/bare-usage.md)
- [Ontwikkelgids voor apps met de engine-API - VOICEVOX for Laravel](/nl/packages/laravel-voicevox/app-guide.md)
