codedungeon/laravel-craftsman
Laravel Craftsman streamlines Laravel scaffolding with powerful Artisan commands for generating models, controllers, migrations, factories, seeders, requests, resources, and tests—complete with useful options—so you can build applications faster.
Architecture fit. codedungeon/laravel-craftsman is a developer-time CLI scaffolding package, not a runtime library. It extends the Laravel Artisan console surface with opinionated generators (models, controllers, migrations, seeders, factories, etc.) that wrap and enrich the native make:* commands. Architecturally this is a low-blast-radius fit: it sits in the console kernel of a conventional Laravel application, assumes standard directory layout, and produces source files the team would otherwise write by hand. It is not intended — and should not be used — as a production dependency, which structurally caps its systemic risk regardless of its maintenance state.
Integration feasibility. The package is MIT-licensed and Composer-installable as a require-dev dependency, so the mechanics are trivial. The real constraint is version currency: the last release was 2020-07-03, which predates Laravel 8's model-directory conventions, Laravel 9/10/11's PHP 8.1+ typed signatures, and several Symfony Console API shifts. Realistically it targets the Laravel 6/7 + PHP 7.x era. Integration feasibility is therefore a timeboxed spike, not a green-lit commitment. The zero-dependents figure reinforces this: nobody in the ecosystem has validated it against modern Laravel, so the burden of proof falls entirely on our spike.
Technical risk. Two distinct risks, with very different magnitudes:
require-dev. No attack surface in deployed artifacts, no runtime performance concern.Key questions to resolve before any commitment:
make:* plus stub:publish (Laravel 9+) does not? Quantify the boilerplate delta.Stack fit. Appropriate for standard Composer-based Laravel monoliths on the 6/7 generation of the framework. It is a poor fit for anything with non-standard directory structure, Lumen, or projects on Laravel 9+ where native generators have closed much of the gap. Because it only authors files, it composes cleanly with any downstream tooling (linters, static analysis, test suites) — but that also means it adds no structural capability, only ergonomics.
Migration path. Do not rip-and-replace existing workflows. Baseline the native php artisan make:* output for a representative slice of resources (a model with relationships, a resourceful controller, a migration, a factory), then run Craftsman in a scratch branch against the same slice and diff. If the delta is marginal, the native + custom-stub route wins on maintenance economics alone. If Craftsman genuinely saves meaningful boilerplate, the fallback is to fork, pin, and treat it as an internal tool — or extract only the two or three generators worth keeping into project-local Artisan commands. The strategic alternative to evaluate in parallel is laravel-shift/blueprint, which is actively maintained, declarative (YAML-defined schema), and covers the same problem space with a modern support posture.
Compatibility. Install with an exact version pin under require-dev, never floating. Verify it is excluded from production builds (composer install --no-dev in the deploy pipeline) and confirm the PHP matrix in CI. Treat any CI invocation as optional/non-blocking until the tool has proven stable across at least one framework upgrade cycle.
Sequencing.
Maintenance. This is the dominant cost. The package is effectively abandoned: no releases since 2020, single maintainer, no dependents to surface regressions. Adopting it transfers maintenance ownership to us — either implicitly (we absorb breakage on every Laravel/PHP upgrade) or explicitly (we fork). That ongoing tax should be weighed against the one-time productivity gain of faster scaffolding, and it rarely nets positive for a tool with a maintained alternative.
Support. No vendor SLA, no security advisory process, community issues only. If adopted, an internal runbook and owner are mandatory: who upgrades it, who fixes breakage, and what triggers removal.
Scaling. There is no production scaling dimension — the tool runs on developer machines and, at most, in ephemeral CI jobs. The scaling concern is organizational: version drift across teams and repositories, onboarding documentation, and keeping generated-code conventions consistent. Pin one version org-wide or don't adopt at all.
Failure modes.
make:* creates ambiguity about which tool is canonical; teams diverge.Ramp-up. Low friction — the command surface mirrors Artisan conventions, so a Laravel-familiar engineer is productive within a few hours using the README alone. The real cost is not learning the tool; it is the eventual migration off it once compatibility breaks or the team standardizes on native generators. Budget for that exit from day one, and keep adoption shallow enough that the exit is a afternoon's work rather than a quarter's.
How can I help you explore Laravel packages today?