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.
artisan make: calls plus hand-wiring of namespaces and paths. The PM decision it informs is "how fast can we put a working CRUD screen in front of a stakeholder," which is often the real constraint on validating an internal tool or MVP. As of 1.10.1 the test stub can be emitted in Pest syntax (craft:test --pest, optionally --unit), which removes a manual rewrite step for teams that standardised on Pest rather than PHPUnit — but note the option was added in July 2020, so it targets Pest 0.x-era conventions, not Pest 2/3.artisan stub:publish + custom stubs, and (b) a 1–2 day internal generator. Decision: adopt as a disposable accelerator, or reimplement the 20% of conventions we actually use.Consider it when:
craft:migration was emitting protected $tablename instead of protected $table for the CreateXXXTable class name until this patch, i.e. the generator produced silently wrong model code for an unknown number of prior versions.Look elsewhere when:
artisan make: and stub:publish. The marginal gain over native stubs is modest, and native stubs never break on upgrade.--pest flag is a 2020-era Pest 0.x stub; expect to rewrite the generated test to Pest 2/3 idioms either way.Migration cost if abandoned: low. Because output is plain Laravel code, removal is "delete the dev dependency." That asymmetry — cheap to try, cheap to drop — is the single strongest argument for a time-boxed spike.
To executives (one paragraph): Craftsman is a free, MIT-licensed Laravel code generator that turns one command into a complete, working slice of an application — database table, model, controller, validation, and tests — rather than a day of copy-paste. It is a developer-productivity tool, not a product feature: it ships nothing to customers and adds no runtime or security risk. The catch is unchanged: the project's latest release is 1.10.1, dated 3 July 2020 — a small patch adding a Pest test option and fixing a generated migration/model naming bug — and it has no downstream dependents, so it is unmaintained. That the most recent act of maintenance was correcting a wrong property name in generated code is itself the argument for treating output, not the tool, as the thing to review. Recommendation: fund a one-day, time-boxed spike on a throwaway branch. If it works on our stack, we get a measurable reduction in boilerplate time on CRUD-heavy work. If it does not, we lose a day and keep the design ideas. Either way, do not put it on the critical path.
To engineering (the honest version): This is a stub-and-convention engine with a craft: command namespace that emits models, controllers, migrations, seeders, factories, requests, resources, tests, and views, with flags to generate the whole set at once against a configured path/namespace layout. The value is entirely in the convention, and the convention is five years old. 1.10.1 changes little strategically: craft:test --pest (plus --unit) lets you emit Pest-formatted test stubs, and craft:migration --tablename now produces a CreateXXXTable class name and a protected $table = "..." property instead of the previously wrong $tablename. The second item matters more than the first — it means prior versions generated subtly invalid model code, so read every generated diff. Two viable plays: (1) Spike — install on a branch, generate one representative resource, diff the output against our current make: output, and judge on the diff, not the docs. (2) Reimplement — if the diff looks good, port the conventions we like into published stubs or a ~200-line internal artisan command (Pest flag included). Given zero dependents and a 2020 release, play (2) is the more likely long-term answer; play (1) tells us whether it is worth the two days. Do not add it to composer.json as a shared team dependency without a named owner.
How can I help you explore Laravel packages today?