bpocallaghan/generators
A Laravel package by Ben Plummer that extends Artisan's built-in generators, adding commands to quickly scaffold models, controllers, requests, migrations, seeders, and more with sensible defaults.
Architecture fit. bpocallaghan/generators is a developer-experience package, not a runtime dependency. It extends Laravel's GeneratorCommand family to produce opinionated scaffolding (models with accompanying migrations/factories/seeders, resources, requests, etc.) driven by a publishable config/generators.php and publishable stub files. Integration surface is narrow: a service provider that registers console commands, a config merge, and a vendor:publish hook. It does not touch the request lifecycle, the container's hot path, or the database. This makes it architecturally benign — the correct question is not "does it fit our architecture" but "does its opinionation match our conventions."
Integration feasibility. Feasible with minimal effort. It installs as a require-dev dependency, leverages package auto-discovery, and needs only php artisan vendor:publish to expose config and stubs. The real work is not installation; it is reconciling the package's default stub output with our house style (namespaces, DTO/value-object conventions, test scaffolding, static analysis annotations).
Technical risk. Low blast radius, moderate sustainability risk:
composer.json constraints alone.make: commands, behavior differs per project depending on load order and config. Confirm whether it extends or replaces native commands.resources/stubs or stubs/, the artifacts are ours, not the vendor's — a governance point often missed.Key questions for the maintainer/vendor evaluation.
make:* signatures? What happens on collision?Stack fit. Best suited to a Laravel monolith or a modular Laravel codebase where multiple squads author similar artifacts and consistency matters more than novelty. Poor fit for projects with heavy Domain-Driven Design layering, non-standard namespaces, or a strong existing internal generator — the package's value is its defaults, and overriding them fully erodes the benefit.
Migration path. Non-disruptive and fully reversible:
require-dev, pin an exact version, run auto-discovery.Removal is a single composer remove with no database or config cleanup required — the primary argument for adopting it at all.
Compatibility. Add an explicit CI matrix entry that runs the package's commands against the pinned Laravel and PHP versions. Because generated code becomes source, a Laravel upgrade must include a stub-regeneration check: generate a fixture artifact post-upgrade and diff it, otherwise drift enters silently.
Sequencing. Pilot → codify stubs → wire into the project template or a documented make recipe → add lint/static-analysis on generated output (Pint, PHPStan/Psalm) so scaffolding cannot introduce style or type regressions. Only after that should the team treat it as a standard tool rather than a personal convenience.
Maintenance. Low ongoing operational cost — no services, no migrations, no runtime telemetry. The maintenance burden is concentrated in stub stewardship: someone must own the published stubs and refresh them on each Laravel major. Budget roughly a day per major upgrade, plus ad-hoc time when conventions shift.
Support. MIT-licensed community package with no SLA and a single primary maintainer. Support posture should be "self-support with a fork escape hatch." Because the code footprint is small and the commands are conventionally structured, forking is genuinely cheap; that is the mitigating factor for the abandonment risk.
Scaling. Irrelevant to production scale — it never executes in production. It scales with team size and onboarding volume: value increases with the number of engineers authoring similar artifacts, and approaches zero for a solo developer who already has muscle memory. Do not include it in a production container image; keep it in require-dev so it is excluded from optimized builds.
Failure modes.
vendor:publish without --force awareness.Ramp-up. Under half a day per engineer: read the published config, run one command per artifact type, review the stubs. Documentation burden is a single internal page covering which command to use for which artifact and the rule that stubs are owned by the platform team. Low enough that a pilot needs no formal training plan.
TPM recommendation. Adopt conditionally as a require-dev convenience with vendored, house-owned stubs and an explicit CI compatibility check. It is not a platform dependency and should never be treated as one; the decision is low-risk and low-regret, contingent on someone accepting stub ownership.
How can I help you explore Laravel packages today?