Skip to main content
This article is based on source-code research. The repository is under development as of July 2026.

What is Laravel Package Skeleton?

Laravel Package Skeleton is a starter template for creating Laravel packages.
Running composer install automatically launches an interactive configuration script (configure.php) that lets you set the package name, vendor name, namespace, and which features to include, question by question. Once configured, you can start development immediately.

Why this skeleton exists

If you start building a Laravel package “your own way,” a lot of time is spent on things unrelated to the package logic itself: test environment setup, static analysis, code formatting, GitHub Actions configuration, and so on. Laravel Package Skeleton consolidates the best practices the Laravel team uses in real package development into a single template. It lets you skip environment setup and jump straight to implementing package logic.

Included tools

Configurable package features

The composer install prompt lets you select only the features you need. Scaffolding for unselected features is removed.

Configurable tools

Similarly, tools can be toggled on/off per project.

Setup flow

1

Create a repository from the template

Click the Use this template button on GitHub to create a new repository, or clone directly.
2

Install dependencies

Running composer install automatically launches configure.php.
To run the script manually, use the --no-scripts option.
3

Answer the prompts

Configure the following items via prompts:
  • Author Name / Email
  • Vendor name (e.g. kawax)
  • Package name (e.g. my-package)
  • Package description
  • Class name (e.g. MyPackage)
  • Multi-select for which features to use
  • Multi-select for which tools to use
  • Auto-create a GitHub repository (if the gh CLI is authenticated)
4

Verify it works

Runs PHPStan → Pint → type coverage → Pest in sequence.
5

End-to-end testing with Workbench

A minimal Laravel app for verifying the package starts at http://localhost:8000.

Non-interactive mode

For setups from CI or scripts, use the --no-interaction flag.
Specifying feature flags includes only those features. Omitting the flags includes all features.

GitHub Actions CI

The bundled tests.yml is a matrix build that runs tests across multiple PHP versions, Laravel versions, and OSes.
What each job runs:
  1. PHPStan (composer analyse) — static analysis
  2. Pint (composer lint:check) — style check
  3. Type coverage (composer test:types) — verify 100% type coverage (Ubuntu only)
  4. Pest (composer test:unit) — unit tests (Ubuntu only)

Changelog automation

update-changelog.yml is triggered by GitHub Releases and auto-updates CHANGELOG.md. release.yml classifies changes by PR label and generates release notes. Release note labels:

What configure.php does

configure.php is a one-shot bootstrap script. It’s deleted after execution. Recommended post-install settings from the README:
  • Manually review Dependabot PRs — auto-merge workflows are not included
  • Create release note labelsbreaking, enhancement, bug, documentation, dependencies, maintenance, skip-changelog, duplicate
  • Configure main branch protection — because changelog automation commits to CHANGELOG.md via GitHub Actions, branch protection rules need to be adjusted
No additional repository secrets are needed. The included workflows use the built-in GITHUB_TOKEN.

Current development status

  • GitHub repository: laravel/package-skeleton
  • Publication timing: July 2026 (actively developed)
  • Note: because it’s early in development, the API and structure may change
If you’re starting a new Laravel package, it’s better to begin from this template than to assemble your own skeleton from scratch. It packs in the best practices the Laravel team has developed over years of package work.

laravel/package-skeleton repository

Source code and latest updates.

Package development official docs

See the official documentation for the basics of Laravel package development.
Last modified on July 13, 2026