laravel/laravel
How to contribute
This skeleton is the seed of millions of Laravel applications. Changes here ripple out to every composer create-project laravel/laravel from the day they're released. That weight makes the contribution bar high.
Where contributions are welcome
The repo's README defers to the official Laravel contribution guide for the full process. The relevant rules of thumb for this skeleton specifically:
- Bug fixes in defaults (config files, migrations, env-var handling) are welcome anytime.
- New defaults (a new env var, a new config block, a new migration column) need a clear rationale. Many such PRs are closed in favour of doing the work in
laravel/frameworkand exposing a hook. - Stylistic changes (rewriting comments, moving things around, switching to a different convention) usually aren't merged. The skeleton is opinionated by intention.
- Security fixes should be reported privately to
taylor@laravel.comper the README's Security Vulnerabilities section, not opened as public issues or PRs.
What ends up where
The repo's read-the-source rules:
| Location | What lives there |
|---|---|
app/ |
Application code (PSR-4: App\) |
bootstrap/ |
Framework wiring |
config/ |
One file per concern |
database/migrations/ |
Schema changes — anonymous-class migrations only |
database/factories/, seeders/ |
Test fixtures |
routes/ |
Web + console route definitions |
resources/ |
Blade views and Vite source files |
tests/ |
PHPUnit tests (Feature + Unit) |
.github/workflows/ |
CI |
Read Patterns and conventions for the style and structure rules visible across the codebase.
Workflow
A typical contribution cycle:
- Fork the repo (you'll be working against
13.xfor now — or whatever branch is current). - Clone, install, and verify tests pass on a clean checkout (see Development workflow).
- Make the change. Keep it scoped: one logical change per PR.
- Run
php artisan testandvendor/bin/pint. - Open a PR against the current branch (
13.x,12.x, etc., notmasterdirectly). - The CI matrix in
.github/workflows/tests.ymlruns PHP 8.3, 8.4, and 8.5. All three must pass.
Definition of done
A PR is mergeable when:
-
php artisan testpasses locally on PHP 8.3 (the minimum). - CI is green across PHP 8.3, 8.4, 8.5.
-
vendor/bin/pintfinds no style violations. - Any new env var is documented in
.env.example. - Any new config option is documented in the relevant
config/*.phpcomment block. - Migrations have symmetric
up()anddown()methods. - No new dependency is added unless absolutely necessary.
Sub-pages
| Topic | Why |
|---|---|
| Development workflow | Branch, code, test, PR, merge cycle |
| Testing | PHPUnit setup, base classes, fakes |
| Debugging | Logs, exceptions, common errors |
| Patterns and conventions | Coding style, structural rules, opinionated defaults |
| Tooling | Pint, Pail, Vite, Composer scripts |
A note on issues vs. PRs
The repo uses .github/workflows/issues.yml to apply a "help wanted" workflow when issues are labeled appropriately, and .github/workflows/pull-requests.yml to mark PRs as uneditable on open. Both of those workflows delegate to laravel/.github reusable workflows — so the actual policy lives in the org-wide repo and isn't visible here.
Built by Factory AutoWiki from public repository content. It is a generated preview for codebase exploration, not source-maintained documentation.