> ## 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 – Starter-Template für offizielle Pakete

> Erste Analyse von laravel/package-skeleton. Ein offizielles Starter-Template, das die Best Practices für die Entwicklung von Laravel-Paketen bündelt. Enthält Pest, Larastan, Pint, Workbench und GitHub Actions CI in einem Rundum-Setup.

<Info>
  Dieser Artikel basiert auf einer Quellcode-Analyse. Stand: Juli 2026, das Repository befindet sich in Entwicklung.
</Info>

## Was ist Laravel Package Skeleton?

[Laravel Package Skeleton](https://github.com/laravel/package-skeleton) ist ein Starter-Template zum Erstellen von Laravel-Paketen.

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

Beim Ausführen von `composer install` startet automatisch ein interaktives Konfigurationsskript (`configure.php`), das Paketname, Vendor-Name, Namespace und die gewünschten Funktionen im Frage-Antwort-Format einrichtet. Anschließend kann sofort mit der Entwicklung begonnen werden.

```mermaid theme={null}
graph TD
    A["Auf GitHub<br>Use this template"] --> B["composer install"]
    B --> C["configure.php wird automatisch ausgeführt"]
    C --> D{"Interaktive Konfiguration"}
    D --> E["Paketname, Vendor, Namespace"]
    D --> F["Auswahl der Funktionen"]
    E --> G["Konfiguration abgeschlossen"]
    F --> G
    G --> H["Funktionsprüfung per composer test"]
```

## Warum dieses Skeleton nötig ist

Wenn Sie ein Laravel-Paket „auf eigene Faust" beginnen, geht viel Zeit für die Einrichtung der Testumgebung, statischer Analyse, Code-Formatierung und GitHub Actions verloren – Aufgaben, die mit der eigentlichen Paketlogik nichts zu tun haben.

Laravel Package Skeleton fasst die Best Practices, die das Laravel-Team in der eigenen Paketentwicklung nutzt, in einem einzigen Template zusammen. Damit überspringen Sie den Aufbau der Umgebung und beginnen direkt mit der Implementierung der Paketlogik.

## Enthaltene Werkzeuge

| Werkzeug                                                 | Rolle                          |
| -------------------------------------------------------- | ------------------------------ |
| [Pest](https://pestphp.com/)                             | Test-Framework                 |
| [Larastan](https://github.com/larastan/larastan)         | Statische Analyse für Laravel  |
| [Pint](https://laravel.com/docs/pint)                    | Code-Formatter                 |
| [Orchestra Testbench](https://packages.tools/testbench/) | Testumgebung für Pakete        |
| Workbench                                                | App für End-to-End-Entwicklung |

## Konfigurierbare Paketfunktionen

Bei den Prompts von `composer install` wählen Sie nur die tatsächlich benötigten Funktionen aus. Nicht ausgewählte Gerüstteile werden entfernt.

| Funktion     | Beschreibung                       |
| ------------ | ---------------------------------- |
| Config file  | Config-Datei in `config/` ergänzen |
| Routes       | Route-Datei ergänzen               |
| Views        | Blade-Views ergänzen               |
| Translations | Sprachdateien ergänzen             |
| Migrations   | Migrationen ergänzen               |
| Assets       | Öffentliche Assets ergänzen        |
| Commands     | Artisan-Kommandos ergänzen         |
| Facade       | Facade-Klasse ergänzen             |
| Boost Skill  | Skill für KI-Agenten ergänzen      |

## Konfigurierbare Werkzeuge

Wie bei den Funktionen lassen sich auch die Werkzeuge je nach Projekt ein- oder ausschalten.

| Werkzeug        | Beschreibung                                              |
| --------------- | --------------------------------------------------------- |
| Dependabot      | Automatische Update-PRs für Abhängigkeiten                |
| Issue Template  | Vorlagen für GitHub Issues                                |
| Changelog       | Automatische Aktualisierung von CHANGELOG.md bei Releases |
| Funding         | Sponsoren-Link für GitHub Sponsors                        |
| Security Policy | Richtlinie zur Meldung von Sicherheitslücken              |

## Ablauf des Setups

<Steps>
  <Step title="Repository aus dem Template anlegen">
    Erstellen Sie über den Button **Use this template** auf GitHub ein neues Repository oder klonen Sie direkt.

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

  <Step title="Abhängigkeiten installieren">
    Beim Ausführen von `composer install` startet `configure.php` automatisch.

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

    Wenn Sie das Skript manuell ausführen möchten, verwenden Sie die Option `--no-scripts`.

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

  <Step title="Prompts beantworten">
    Folgende Punkte werden im Frage-Antwort-Format eingerichtet.

    * Author Name / Email
    * Vendor-Name (z. B. `kawax`)
    * Paketname (z. B. `my-package`)
    * Paketbeschreibung
    * Klassenname (z. B. `MyPackage`)
    * Multi-Select der genutzten Funktionen
    * Multi-Select der genutzten Werkzeuge
    * Optionale automatische Erstellung eines GitHub-Repositorys (falls gh CLI authentifiziert ist)
  </Step>

  <Step title="Funktionsprüfung">
    ```bash theme={null}
    composer test
    ```

    Alle Prüfungen laufen der Reihe nach: PHPStan → Pint → Type-Coverage → Pest.
  </Step>

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

    Unter `http://localhost:8000` startet eine kleine Laravel-App zur Prüfung des Pakets.
  </Step>
</Steps>

## Nicht-interaktiver Modus

Wenn Sie das Setup aus CI oder einem Skript heraus ausführen, verwenden Sie das Flag `--no-interaction`.

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

Werden Feature-Flags gesetzt, sind nur diese Funktionen enthalten. Ohne Flags werden alle Funktionen aufgenommen.

## GitHub Actions CI

Die im Skeleton enthaltene `tests.yml` ist ein Matrix-Build, der Tests über mehrere PHP-, Laravel- und OS-Kombinationen hinweg ausführt.

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

Was jeder Job ausführt:

1. **PHPStan** (`composer analyse`) – Statische Analyse
2. **Pint** (`composer lint:check`) – Stil-Check
3. **Type Coverage** (`composer test:types`) – Prüfung auf 100 % Typabdeckung (nur Ubuntu)
4. **Pest** (`composer test:unit`) – Unit-Tests (nur Ubuntu)

## Changelog-Automatisierung

`update-changelog.yml` aktualisiert `CHANGELOG.md` automatisch beim GitHub-Release. `release.yml` klassifiziert Änderungen nach PR-Label und erzeugt daraus die Release Notes.

Labels für Release Notes:

| Label            | Kategorie                     |
| ---------------- | ----------------------------- |
| `breaking`       | Breaking Change               |
| `enhancement`    | Feature                       |
| `bug`            | Bugfix                        |
| `documentation`  | Dokumentation                 |
| `dependencies`   | Abhängigkeiten                |
| `maintenance`    | Wartung                       |
| `skip-changelog` | Nicht ins Changelog aufnehmen |

## Was configure.php tut

`configure.php` ist ein einmalig ausgeführter Bootstrap. Nach der Ausführung wird die Datei entfernt.

```mermaid theme={null}
graph LR
    A["configure.php ausgeführt"] --> B["Platzhalter ersetzen<br>:vendor_slug/:package_slug<br>:author_name usw."]
    B --> C["Nicht genutzte Feature-Dateien entfernen"]
    C --> D["README_PACKAGE.md → README.md<br>AGENTS_PACKAGE.md → AGENTS.md"]
    D --> E["CLAUDE.md nach AGENTS.md verlinken<br>.claude nach .agents verlinken"]
    E --> F["Das Skript selbst löschen"]
```

## Empfohlene GitHub-Einstellungen nach der Installation

Empfehlungen aus der README nach der Installation:

* **Dependabot-PRs manuell prüfen** – ein Auto-Merge-Workflow ist nicht enthalten
* **Release-Notes-Labels anlegen** – `breaking`, `enhancement`, `bug`, `documentation`, `dependencies`, `maintenance`, `skip-changelog`, `duplicate`
* **Branch-Schutz für `main`** – da die Changelog-Automation via GitHub Actions in `CHANGELOG.md` committet, müssen die Branch-Protection-Regeln entsprechend angepasst werden

Zusätzliche Repository-Secrets sind nicht nötig. Die enthaltenen Workflows nutzen das eingebaute `GITHUB_TOKEN` von GitHub.

## Aktueller Entwicklungsstand

* **GitHub-Repository**: [laravel/package-skeleton](https://github.com/laravel/package-skeleton)
* **Veröffentlichung**: Juli 2026 (aktive Entwicklung)
* **Hinweis**: Da sich das Projekt in einer frühen Phase befindet, können sich API und Aufbau noch ändern

Wer neu mit Laravel-Paketen beginnt, sollte dieses Template gegenüber einem selbst zusammengebauten Skeleton bevorzugen. Es steckt voller Best Practices, die das Laravel-Team über Jahre gesammelt hat.

<Card title="Repository laravel/package-skeleton" icon="github" href="https://github.com/laravel/package-skeleton">
  Quellcode und aktuelle Informationen finden Sie hier.
</Card>

<Card title="Offizielle Dokumentation zur Paketentwicklung" icon="book-open" href="https://laravel.com/docs/packages">
  Zu den Grundlagen der Laravel-Paketentwicklung konsultieren Sie bitte die offizielle Dokumentation.
</Card>


## Related topics

- [Ein Laravel-Starter-Kit erstellen](/de/advanced/starter-kit-creation.md)
- [VOICEVOX für Laravel](/de/packages/laravel-voicevox/index.md)
- [Feed Generator](/de/packages/laravel-bluesky/feed-generator.md)
- [Laravel Maestro – Orchestrator für die Entwicklung von Starterkits](/de/blog/maestro-introduction.md)
- [Laravel Fortify und Starter-Kits](/de/advanced/fortify.md)
